package com.lhj.bootdemo.designmode.watcher;

import java.util.ArrayList;
import java.util.List;

/**
 * @author lhj
 * @version 1.0
 * @date 2022/4/19 10:02 上午
 * @description: 定义被观察者
 */

public class BusinessServer implements Observerable {

    private List<Observer> list = new ArrayList<>(); //面向接口编程
    private String msg;


    @Override
    public void registerObserver(Observer o) {
        list.add(o);
    }

    @Override
    public void removeObserver(Observer o) {
        if (!list.isEmpty()) {
            list.remove(o);
        }

    }

    @Override
    public void notifyObserver() {
        for (int i = 0; i < list.size(); i++) {
            Observer observer = list.get(i);
            observer.update(msg);//通知Observer调用update方法
        }
    }


    public void setMsg(String msg) {
        this.msg = msg;
        System.out.println("业务数据发生更新： " + msg);
        // 当被观察者调用notifyObservers()方法时，观察者的update()方法会被回调。
        notifyObserver();  //消息更新，通知所有观察者
    }





}
